layui.use(['table','form'], function(){
  var table = layui.table;
  var layer = layui.layer;
  var form = layui.form;
  
  // 渲染dataType
  table.render({
    elem: '#dataType'
    ,height: 800
    ,url: ctx+'/sys/dict/type/pageList' //数据接口
    ,page: true //开启分页
    ,cols: [[ //表头
       {field: 'id', title: 'ID',hide:true}
      ,{field: 'typeName', title: '类别名称', width:'33%',align:'center'}
      ,{field: 'status', title: '状态', width:'33%',align:'center',templet:function(data){
    	  if(data.status == 0){
    		  return "<span >冻结</span>";
    	  }else{
    		  return "<span >激活</span>";
    	  }
      }}
      ,{field: 'ops', title: '操作', width:'33%',align:'center',templet : function(data){
    	  var str = '';
    	  if(data.status == 0){
    		  str = "<button class='layui-btn layui-btn-sm layui-btn-normal' lay-event='onOrOff'>激活</button>";
    	  }else{
    		  str = "<button class='layui-btn layui-btn-sm layui-btn-danger' lay-event='onOrOff'>冻结</button>";
    	  }
    	  
    	  str += "<button class='layui-btn layui-btn-sm layui-btn-warm' lay-event='update'>更新</button>";
    	  return str;
      }}
      
    ]],
    toolbar : '#dataTypeToolBar',
    defaultToolbar :[],
    
  });
  
  //渲染dict
  table.render({
	    elem: '#dict'
	    ,height: 800
	    ,url: ctx+'/sys/dict/list' //数据接口
	    ,page: true //开启分页
	    ,cols: [[ //表头
	       {field: 'id', title: 'ID',hide:true}
	      ,{field: 'index', title: '序号',type: 'numbers'}
	      ,{field: 'typeName', title: '类别名称', width:'20%',align:'center'}
	      ,{field: 'dictKey', title: '字典键', width:'20%',align:'center'}
	      ,{field: 'dictValue', title: '字典值', width:'20%',align:'center'}
	      ,{field: 'dictRemark', title: '字典描述', width:'20%',align:'center'}
	      ,{field: 'ops', title: '操作', width:'20%',align:'center',templet: '#dictTool'}
	      
	    ]],
	    defaultToolbar :[],
	    toolbar : '#dictToolbar'
	    
    });
  
  
  table.on('toolbar(dataType)', function(obj){
	  var checkStatus = table.checkStatus(obj.config.id);
	  switch(obj.event){
	    case 'addDateType':
	    	addDateType();
	    break;
	  };
  });
  
  table.on('toolbar(dict)', function(obj){
	  var checkStatus = table.checkStatus(obj.config.id);
	  switch(obj.event){
	    case 'addDict':
	    	addDict();
	    break;
	  };
  });
  var layerIndex;
  //新增字典内容
  function addDict(){
	  layerIndex = layer.open({
  		  title : '新增字典',
  		  type: 1,
  		  area: ['400px', '420px'],
  		  content: $('#dictDialog') 
      });
  }
  
  // 新增字典类型
  function addDateType(){
	  layer.prompt({
		  formType: 0,
		  title: '请字典类别名称',
		  area: ['200px', '100px'] //自定义文本域宽高
		}, function(value, index, elem){
			$.ajax({
				url : ctx+'/sys/dict/type/add',
				data : {
					'name' : value
				},
				dataType : 'json',
				success : function(res){
					if(res.success == false){
						layer.msg(res.msg);
					}else{
						layer.msg(res.msg);
						layer.close(index);
						// 刷新列表
						table.reload('dataType');
						refreshDictType();
					}
				}
			});
		 
	  });
  }
  
  table.on('tool(dict)',function(obj){
	  var data = obj.data; 
	  var layEvent = obj.event; 
	  if(layEvent == 'delete'){
		  deleteDict(data.id);
	  }else if(layEvent == 'update'){
		  updateDict(data);
	  }
  });
  
  
  //更新字典内容
  function  updateDict(data){
	  form.val("formFilterUpdate", {
		 'dictKey': data.dictKey,
		 'dictValue' : data.dictValue,
		 'dictType':data.dictType,
		 'dictRemark':data.dictRemark
	  });
	  $('#dictDialogUpdate').find('select').html("<option value='"+data.dictType+"'>"+data.typeName+"</option>");
	  $('#updateId').val(data.id);
	  form.render('select');
	  layerIndex = layer.open({
  		  title : '修改字典',
  		  type: 1,
  		  area: ['400px', '420px'],
  		  content: $('#dictDialogUpdate') 
      });
  }
  
  
  //删除字典
  function deleteDict(id){
	  layer.confirm('确定要删除吗?', function(index){
		  commons.ajax({
			  url : ctx+'/sys/dict/delete',
			  data : {
				  'id' : id
			  },
			  success : function(res){
				  layer.msg(res.msg);
				  layer.close(index);
				  table.reload('dict');
			  }
		  });
		});  
  }
  
  table.on('tool(dataType)', function(obj){ 
	  var data = obj.data; 
	  var layEvent = obj.event; 
	 
	  // 冻结或激活字典类型
	  if(layEvent === 'onOrOff'){ //查看
		  commons.ajax({
			  url : ctx + '/sys/dict/type/onOrOff',
			  data : {
				  'id' : data.id
			  },
			  success : function(res){
				  layer.msg(res.msg);
				  // 刷新列表
				  table.reload('dataType');
				  table.reload('dict');
				  refreshDictType();
			  }
		  });
	  }else if(layEvent === 'update'){
		  layer.prompt({
			  formType: 0,
			  title: '字典类别名称',
			  area: ['200px', '100px'] //自定义文本域宽高
			}, function(value, index, elem){
				$.ajax({
					url : ctx+'/sys/dict/type/update',
					data : {
						'typeName' : value,
						'id' : data.id
					},
					dataType : 'json',
					success : function(res){
						if(res.success == false){
							layer.msg(res.msg);
						}else{
							layer.msg(res.msg);
							layer.close(index);
							// 刷新列表
							table.reload('dataType');
							refreshDictType();
						}
					}
				});
			 
		  });
	  }
	  
	});
  
  
  // 刷新字典类别下拉框
  function refreshDictType(){
	  $.ajax({
		  url : ctx+'/sys/dict/type/list',
		  dataType : 'json',
		  data : {type: 1},
		  success : function(res){
			  var str = '';
			  $(res).each(function(i,val){
				  str += " <option value='"+val.id+"'>"+val.typeName+"</option>"
			  });
			  $('#dictTypeSelect').html(str);
			  form.render('select')
		  }
	  });
  }
  
  //提交字典值
  form.on('submit(*)', function(data){
	  commons.ajax({
		  url : ctx+'/sys/dict/add',
		  data : data.field,
		  success : function(res){
			  layer.msg(res.msg);
			  layer.close(layerIndex);
			  table.reload('dict');
			  $('#reset').click();
		  }
	  });
	  return false; 
  });
  
  //更新字典值
  form.on('submit(update)', function(data){
	  commons.ajax({
		  url : ctx+'/sys/dict/update',
		  data : data.field,
		  success : function(res){
			  layer.msg(res.msg);
			  layer.close(layerIndex);
			  table.reload('dict');
		  }
	  });
	  return false; 
  });
  
  //刷新下拉框
  refreshDictType();
  
  // 清空标签的内容
  function formReset(){
  	$('#reset').click();
  }
  
});